package com.youngjun.common.mybatis.mapper.support;

import java.util.List;

public interface BaseMapper<T> {

    /**
     * 根据record的主键和isDeleted属性逻辑删除数据或恢复数据。
     * @param record
     * @return
     */
    int deleteWithLogic(Long record);
    /**
     * 插入record的值
     * @param record
     * @return
     */
    int insert(T record);

    /**
     * update by primary key， 已逻辑删除的无法更新
     *
     * @param record
     * @return
     */
    int updateByPrimaryKey(T record);

    /**
     * 根据主键更新record不对空的属性，已逻辑删除的无法更新
     * @param record
     * @return
     */
    int updateWithOptionalByPrimaryKey(T record);

    /**
     * 根据record属性作为where条件查找，已逻辑删除的会排除
     * @param record
     * @return
     */
    T select(T record);


    /**
     * 查询所有，已逻辑删除的会排除
     * @return
     */
    List<T> selectAll();
    /**
     * 根据record属性作为where条件批量查找，已逻辑删除的会排除
     * @param record
     * @return
     */
    List<T> selectAll(T record);
}
